

import 'package:yp/base/controller/view_state_controller.dart';

/// 基于
abstract class GetxListController<T> extends GetxViewStateController {
  /// 页面数据
  List<T> list = [];

  /// 第一次进入页面loading skeleton
  initData() async {
    refresh(init: true);
  }

  /// 下拉刷新
  refresh({bool init = false}) {
    try {
      loadData().listen((event) {
        List<T> data = event;
        if (data.isEmpty) {
          list.clear();
          setNone();
        } else {
          onCompleted(data);
          list.clear();
          list.addAll(data);
          setSuccess();
        }
        // getx
        update();
      }).onError((error) {
        setNone();
      });
    } catch (e, s) {
      if (init) list.clear();
      setError(e, s);
    }
  }

  /// 加载数据
  Stream loadData();

  onCompleted(List<T> data) {}
}
